The Linux operating system has become immensely popular. USENET newsgroups dedicated to
the Linux operating system have hundreds of messages a day, CD-ROMs of Linux archives are
sold by the thousands, and even more DOS users are wandering around trying to figure out
UNIX syntax and Linux installation problems. In many ways, the interest in Linux brings
back the heady hacker days and the excitement of CP/M and early DOS machines.
Linux does have its problems though. One problem is the wide variety of Linux versions
available, some of which are not very stable. The quality of the installation and
configuration utilities also varies widely from Linux version to Linux version. Another
problem is supporting documentation. Although this problem is decreasing as more people
get involved, most available Linux documentation can be intimidating for first-time users
(and some veterans). Commercial books dedicated to beginning Linux users are helping by
offering a smoother explanation, but most books are simply rehashed Linux documents.
Although this book also uses the Linux documentation as a basis, it also uses almost
two decades of UNIX system administration experience, years of working with Linux, and a
lot of advice from other users. This book is not designed for a new Linux user who can't
find their way around a filesystem, although readers with any knowledge of UNIX will feel
quite at home. Instead, this book is for Linux users who want to expand their systems,
optimize them, and learn more about system administration.
Two schools of thought exist on pronouncing Linux. Because Linux is similar to UNIX and was originally developed by a programmer with the first name Linus, many assume the long i, as in line-ucks, is correct. On the other hand, Linux was developed to replace a UNIX workalike called Minix (with a short i), so the rest of the Linux community calls the operating system lih-nicks. Which is correct? The original developers used the latter pronunciation, while most North Americans prefer the former. Choose whichever you wish.
Linux is a freely distributed, multitasking, multiuser operating system that behaves
like UNIX. Designed specifically for the PC, Linux takes advantage of the PC's
architecture to give you performance similar to UNIX workstations of a couple of years
ago. Linux isn't a small, simple operating system like DOS (even in its latest
incarnations). The development of UNIX has resulted in a mish-mash of files and
directories, all of which are carried over to Linux for compatibility and programming
reasons.
Linux includes a bunch of files for the operating system itself (called the kernel), a
ton of utility programs, documentation files, add-on emulators for other operating
systems, and much more. The following sections explain what you get when you install Linux
on your system. Future chapters expand on these topics.
Linux is a complete multitasking, multiuser operating system that behaves like the UNIX
operating system in terms of kernel behavior and peripheral support. Linux has all the
features of UNIX, plus several recent extensions that add new versatility to Linux. All
source code for Linux and its utilities is freely available.
The Linux kernel was originally developed for the Intel 80386 CPU's protected mode. The
80386 was designed with multitasking in mind (despite the fact that most of the Intel CPUs
are used with single-tasking DOS), and Linux makes good use of the advanced features built
into the CPU's instruction set. Memory management is especially strong with the 80386
(compared to earlier CPUs). A floating-point emulation routine allows Linux to function on
machines that do not have math coprocessors (such as the SX series of Intel CPUs).
Linux allows shared executables so that if more than one copy of a particular
application is loaded (either by one user running several identical tasks, or several
users running the same task), all the tasks can share the same memory. This process,
called copy-on-write pages, makes for much more efficient use of RAM.
The Linux kernel also supports demand paging, which means that only sections of a
program that are necessary are read into RAM. To further optimize memory usage, Linux uses
a unified memory pool. This pool enables all free memory on the system to be used as disk
cache, effectively speeding up access to frequently used programs and data. As memory
usage increases, the amount of cache is automatically adjusted.
To support large memory requirements when only small amounts of physical RAM are
available, Linux supports swap space. Swap space enables pages of memory to be written to
a reserved area of a disk and treated as an extension of physical memory. By moving pages
back and forth between the swap space and RAM, Linux can effectively behave as if it had
more physical RAM than it does, albeit at the cost of some speed due to the hard drive's
slower access.
Linux uses dynamically shared libraries extensively. Dynamically shared libraries use a
common library section for many different applications, effectively reducing the size of
each application. Linux does allow full library linking (called statically linked
libraries) for portability to machines that may not have the dynamic libraries.
To make Linux widely acceptable, it supports a number of different filesystems,
including those compatible with DOS and OS/2. Linux's own primary filesystem, called
ext2fs, is designed for optimal use of the disk.
Linux is ideally suited for application development and experimentation with new
languages. Several different compilers, including C, C++, Fortran, Pascal, Modula-2, LISP,
Ada, Basic, and Smalltalk, come with the distribution software. Many of the Linux
compilers, tools, debuggers, and editors are from the Free Software Foundation's GNU
project.
GNU (a recursive acronym for Gnu's Not UNIX) was developed by the Free Software
Foundation(FSF) to provide royalty-free software to programmers and developers. Since it
was created, many programmer packages and toolkits have been developed and assigned to FSF
for distribution. Most of the GNU software mirrors(and often improves upon) commercially
available software.
Linux includes many GNU utilities, including the languages mentioned earlier,
debuggers, and compiler tools. Text processors, print utilities, and other GNU tools are
also included with most Linux distributions. As more software becomes available from FSF,
it can be ported and compiled under Linux because Linux behaves as a standard UNIX
operating system.
X (sometimes improperly called X Windows) is a graphical user interface(GUI) designed
at MIT to provide portable GUI applications across different platforms. The version of X
supplied with Linux is called XFree86 and is a direct port of the standard X11R5 system to
80386-based architectures. (Updates to the latest version of X, called X11R6, are
beginning to appear, too.) XFree86 has been extended to provide compatibility with some
other GUIs, including Open Look.
XFree86 supports several different video cards at a number of resolutions, offering a
high-resolution graphical interface. Any X application can be recompiled to run properly
under Linux, and a number of games, utilities, and add-ons have been developed and
supplied as part of the X system. The XFree86 system also includes application development
libraries, tools, and utilities. With these features, programmers can write applications
specifically for X without having to invest in expensive software development kits or
libraries.
Because Linux is designed for PCs, some compatibility with Microsoft MS-DOS is
naturally part of the operating system. Linux provides a DOS emulator, which allows many
DOS applications to be executed directly from within Linux, as part of the distribution
system. Don't expect complete portability of DOS applications, though, as some
applications are written to access peripherals or disk drives in a manner that Linux can't
handle. The WINE (WINdows Emulator) project has developed a Microsoft Windows emulator for
Linux, which enables Windows applications to be run from within Linux.
Although Linux can emulate DOS and Windows, the emulation feature is not intended to
support full DOS usage. Instead, it provides the occasional DOS user with the ability to
run an application under Linux. For heavy DOS use, your system should be set up with both
DOS and Linux in separate partitions, enabling you to enter either one at boot time. Chapter 2 explains how to set this up.
Linux does allow you to transfer files seamlessly between the Linux filesystem and DOS
by accessing the DOS partitions on a hard disk directly, if so configured. This capability
makes it easy to move files and applications back and forth between the two operating
systems.
TCP/IP (Transmission Control Protocol/Internet Protocol) is the primary networking
system used by UNIX and Linux. TCP/IP is a full family of protocols that were developed
for the Internet, and you must use TCP/IP when you venture out onto the Internet. If you
want to connect with other UNIX machines, you will probably have to use TCP/IP as well.
The Linux TCP/IP implementation provides all the networking software and drivers usually
associated with a commercial UNIX TCP/IP package. With this implementation, you can create
your own local area network(LAN), attach to existing Ethernet LANs, or connect to the
Internet.
Networking is a strong feature of Linux, and will be dealt with in considerable detail
later in this book. You don't have to network your Linux system, of course, but a network
is cheap and simple to install and is a fantastic method for transferring files between
systems. You can network over modems, too, so you can have your friends' Linux machines on
a network.
Linux was developed as a freely distributable version of UNIX. UNIX is the most widely
used operating system in the world and has long been the standard for high-performance
workstations and larger servers. UNIX, first developed in 1969, has a strong
programmer-oriented user group that supports the operating system.
How did UNIX get its name? It was based on an operating systems called MULTICS (MULTiplexed Information and Computing System). Ken Thompson, Dennis Ritchie, and Brian Kernighan were involved the design of a new operating system based on MULTICS that would be much simpler. They called the new operating system UNICS (Uniplexed Information and Computing System), which was quickly changed to UNIX.
Because UNIX is a commercial product, it must be bought for each platform it runs on.
Licensing fees for UNIX versions for PC machines range from a few hundred dollars to
several thousand. In an attempt to make UNIX widely available for no cost to those who
want to experiment with it, a number of public domain UNIX systems have been developed
over the years.
One of the early UNIX workalikes was Minix, written by Andy Tanenbaum. Although Minix
didn't have a full range of features, it provided a small operating system that could be
used on PC machines. To expand on Minix, a number of users started developing an enhanced
operating system that would take advantage of the 80386 CPU's architecture. One of the
primary developers of this system, which became known as Linux, was Linus Torvalds of the
University of Helsinki. He released an early version of Linux in 1991. A first commercial,
almost bug-free release was unleashed to the programming community in March 1992.
Soon, many programmers were working on Linux, and as the challenge and excitement of
producing a growing UNIX workalike caught on, Linux grew at a remarkable rate. As the
number of developers working on Linux grew, the entire UNIX workalike operating system was
eventually completed and now includes all the tools you will find in a commercial UNIX
product. Linux continues to grow as programmers adapt features and programs that were
originally written as commercial UNIX products to Linux. New versions of Linux and its
utilities are appearing at an astounding rate. New releases often appear weekly.
To avoid any charges for Linux, the Linux developers do not use any code from other
UNIX systems. There are no licensing fees involved with the Linux operating system, and
part of its mandate is to be freely available. Some companies have undertaken the task of
assembling and testing versions of Linux, which they package on a CD-ROM for a (usually)
minimal price.
Linux is not based on a single version of UNIX; it is a consolidation of the best
features of BSD UNIX and System V. BSD UNIX was developed at the University of California
at Berkeley, starting in 1977. Several major releases increased the power of BSD UNIX.
Several standard UNIX programs originated at BSD, although BSD stopped its UNIX
development in the early 1990s. AT&T, which developed the first version of UNIX,
continued their UNIX development by producing a series of UNIX versions called System III,
System IV, and System V. Linux uses the last primary release of BSD UNIX called 4.4BSD as
its base and takes some other features from the latest release of System V, called System
V Release 4 (SVR4).
Just because Linux is distributed for free, it doesn't mean the software is not
copyrighted. Linux has been registered as copyrighted under the GNU General Public License
(GPL), which is known in the programming community as a copyleft instead of copyright
because of its nature. The GPL allows you to redistribute the Linux software, along with
the complete source code, to anyone who wants it. However, the original owner of the
components retains the copyrights to the software.
Linux doesn't have any kind of warranty. Even if you buy the Linux software from
someone and pay them for maintenance, you cannot ever pursue the Linux programmers. They
make no statement of functionality. If Linux destroys all your accounting or database
data, it's tough luck. You assume the risk. That having been said, Linux has proven itself
very stable and no incidents of serious data damage have occurred as a result of its
programming. However, if the chance that something may go wrong is too great a risk for
your business, you may be better off buying a commercial UNIX system that does have a
warranty.
According to the GNU GPL, you can even sell Linux. You can modify any of the code, and
repackage it as you want. You do not own the software and cannot claim copyright, however,
even if you have modified the source code. The GNU GPL also imposes one condition on the
sale of Linuxyou must provide all source code with the system if you sell it for
profit so that others can further modify and sell it, too.
The authors and developers of Linux don't receive any royalties or shareware fees. For
the most part, they provide the software to end users for the true love of programming and
sharing their code with other programmers who appreciate it.
Linux does not have a telephone support line. In one sense, you are on your own when
you install Linux. On the other hand, many thousands of Linux users are willing to help
everyone from neophyte to experienced programmer. All you have to know is where to look
for help. The two sources of help are written documentation and the user community.
The first exposure most people get to Linux is the Linux INFO-SHEET, a relatively short
ASCII document that is available from USENET, BBSs (bulletin board systems), and many user
groups. The INFO-SHEET is a quick summary of Linux. It is posted at regular intervals to
the Linux newsgroups on USENET.
As Linux was developed, several programmers started writing brief guides to their
contributions as well as wider areas of the operating system. Although these documents
were usually terse and awkward to read, they did provide others with enough information to
continue using Linux. Over a short span of time, the documentation for Linux grew rapidly
and a central organizing body was needed to help keep it on track and avoid duplication.
The Linux Documentation Project was created to provide a complete set of public domain
documentation for Linux. From a few rough installation notes a couple of years ago, the
documentation has expanded to include almost a thousand pages, some very good, some not.
The following primary documents are currently available or soon to be released:
In addition to these primary documents, there are about a dozen smaller guides to
specific or esoteric aspects of Linux. These smaller guides are called How To documents.
Together they form a growing document suite that covers practically every aspect of Linux.
These documents are available with most distributions of the software. Not all the
documents are up to date, as changes to the operating system have occurred since they were
first written. Several different people wrote the Linux documents, so the styles and
layout are not consistent. A perfect-bound printed copy of the Linux Documentation Project
is available from Linux Systems Labs and some bookstores.
You can contact Linux Systems Labs at 49884 Miller Ct., Chesterfield, MI 48047. Their telephone number is (810) 716-1700, and their fax machine number is (810) 716-1703. You can get information about LSL from their e-mail address info@lsl.com.
A number of Frequently Asked Questions (FAQ) files are available through the Linux
newsgroups on USENET and as part of the distribution set. The FAQs tend to be quick
problem-solving items, designed to save you from thumbing through many pages of on-line
documentation. One FAQ called the META-FAQ provides basic information about Linux, where
to get it, and the documentation that goes with it. It too is regularly posted to
newsgroups.
A file called the Linux Software Map (LSM) contains a list of many of the components in
Linux. Unfortunately, the LSM is incomplete and lacks considerable chunks of data.
However, it is a good starting point if you want to see what is included with Linux. The
LSM is updated at intervals and can be obtained from USENET, a Linux FTP site, or with a
distribution set.
Finally, Linux mailing lists are available to anyone with e-mail access to the
Internet. Information on the Linux mailing lists (there are quite a few) is available from
USENET newsgroups or BBSs. See the appendixes for more information about the newsgroups,
BBSs, and FTP sites.
USENET is a collection of discussion groups (called newsgroups) available to Internet
users. The over 13,000 newsgroups generate over 100M of traffic every day. Of all these
newsgroups (which cover every conceivable topic), several are dedicated to Linux. These
newsgroups are a useful forum for information and answers to questions about Linux.
You can read USENET newsgroups through newsreader software that accesses either the
Internet or a local site that offers USENET service (called a newsfeed). Many on-line
services, such as CompuServe and Delphi, provide access to the newsgroups (sometimes at an
additional cost), and some have their own forums for Linux users. BBSs dedicated to Linux
in whole or in part are also appearing, and many excerpt the USENET conversations for the
BBS users who do not have access to USENET.
USENET newsgroups are divided into three categories: primary newsgroups that are
readily available to all users, local newsgroups with a limited distribution (usually
based on geography), and alternate newsgroups that may not be handled by all news servers
due to the relaxed rules of etiquette on them. The primary newsgroups of interest to Linux
users when this book was written are the following:
These primary newsgroups should be available at all USENET sites unless the system
administrator filters them out for some reason. The other Linux newsgroups tend to change
frequently, primarily because they are either regional or populated with highly
opinionated users. The alt (alternate) newsgroups are the ones most likely to contain such
users. One alt newsgroup in operation when this book was written is
alt.uu.comp.os.linux.questions
To find the several different newsgroups about Linux, use your newsreader software to
search for all newsgroups with the word linux in the title. If you have access to
USENET, regularly scan the newsgroup additions and deletions to check for new Linux
newsgroups or existing groups that have folded. Notices about newsgroup changes are
usually posted to all existing groups, but every now and again one gets through without
fanfare. On-line services that provide access to USENET usually maintain lists of all
active newsgroups that can be searched quickly.
The traffic on most of these Linux newsgroups deal with problems and issues people have
when installing, configuring, administering, or using the operating system. A lot of
valuable information passes through the newsgroups quickly, so check them regularly. The
most interesting messages that deal with a specific subject (called a thread) are often
collected and stored as an archive for access through an FTP site.
Not surprisingly, Linux has a good presence on the World Wide Web. Several sites that
Linux information, and a few home pages are specifically dedicated to Linux business. One
of the most popular Linux Web sites is accessible as http://www.ssc.com/linux/linux.html. This site
has a wealth of information and hyperlinks to other Linux sources. Figure 1.1 shows the
home page for this site. From the home page, you can select the type of information you
want by clicking the appropriate icon.
Figure 1.1.
The Linux home page at www.ssc.com offers
access to many of the most-frequently requested pieces of information about Linux.
From the Linux home page at www.ssc.com,
you can also link to other Linux sites, including those of commercial vendors of Linux
products. Figure 1.2 shows the screen that appears when you click the Linux on the Web
icon. These links are updated frequently, so they are a good place to start when
navigating through the Web.
Figure 1.2.
The hyperlinks on the Linux home page at www.ssc.com
point you to the latest Linux information.
One of the key utilities the www.ssc.com
home page offers is access to the Linux Software Map (LSM), which is the most complete
index to Linux software available. The Linux Software Map includes all the software
packages that were developed specifically for Linux, as well as utilities and applications
that have been ported to Linux. Figure 1.3 shows the LSM home page. The Linux Software Map
window lets you search for keywords in on-line documents and indexes, and then displays
the results to provide a fast, easy method of finding software and documents. Searching
the LSM page first can save you hours of digging through FTP and BBS archives.
Figure 1.3.
The Linux Software Map provides an almost complete list of available Linux software,
applications, documents, and associated information.
This section previously mentioned the Linux Documentation Project. Figure 1.4 shows the
home page for the Linux Documentation Project. When accessing information from this page,
keep in mind that the Project is an ongoing task, so don't expect to find a lot of
information in finished form.
Figure 1.4.
The Linux Documentation Project's home page provides access to new Linux documentation.
The Linux Journal is a commercial publication dedicated to Linux. It covers the
entire gamut of Linux topics, ranging from material suitable for newcomers to the
operating system to very complex programming information. Figure 1.5 shows the home page
for the Linux Journal, which is accessible through www.ssc.com. The magazine is not on-line, but
its Web page can give you a sample Table of Contents, issue information, and subscription
details.
Figure 1.5.
The Linux Journal is a magazine for Linux users, developers, and all other
interested parties.
If you want more information about the Linux Journal, send e-mail to subs@ssc.com. Alternatively, you can write to the publisher at P.O. Box 85867, Seattle, WA 98145, or call the publisher at (206) 782-7733. Subscriptions are $22 per year in the U.S.
Several versions of Linux are available, depending on which CD-ROM or FTP site you
visit. This book doesn't care which version you use, because it applies to practically
every version written. As of this writing, the latest Linux kernel versions were 1.2.13
and 1.3.15. The CD-ROM included with this book provides Slackware release 2.3, which
includes the kernel version 1.2.8 (the last really stable version the author tested). You
can change kernel versions by obtaining the source code for a new release, compiling it,
and replacing your existing kernel. This procedure is covered in more detail later in the
book.
You may find several CD-ROM distributions available at your local reseller. InfoMagic's
Slackware release, for example, comes on four CD-ROMs and bears the name Linux Developer's
Resource. In addition to the complete Linux system, it includes source code, FTP archives,
full documentation, several extension products, and demonstration software of commercial
applications (including WordPerfect). Some of this material is included on the CD-ROM at
the back of this book.
Now that you understand what Linux is all about, you're ready to tackle the basics of
Linux installation and the misunderstood LILO utility. The next three chapters complete
the introductory material of this book. Then you'll be ready to dive into the true system
administration material.